package com.itheima.service.impl;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Dept;
import com.itheima.pojo.Emp;
import com.itheima.service.DeptService;
import com.itheima.mapper.DeptMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author ch200
 * @description 针对表【dept(部门表)】的数据库操作Service实现
 * @createDate 2025-03-05 18:17:18
 */
@Service
public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements DeptService {
    @Autowired
    private DeptMapper deptMapper;
    @Autowired
    private EmpMapper empMapper;
    // 新增部门数据

    @Override
    public void insert(Dept dept) {
        dept.setCreateTime(LocalDateTime.now());// 设置创建时间
        dept.setUpdateTime(LocalDateTime.now());// 设置修改时间
        deptMapper.insert(dept);


    }

    //> 该接口用于修改部门数据
    @Override
    public void update(Dept dept) {
        lambdaUpdate().eq(Dept::getId, dept.getId())
                .set(Dept::getName, dept.getName())
                .set(Dept::getUpdateTime, LocalDateTime.now())
                .update();
    }

    /**
     * 根据id删除部门数据
     */
    @Override
    public void deleteById(Integer id) {
        //        - 删除部门时：如果部门下有员工，
//        则不允许删除该部门，并给前端提示错误信息：
//        对不起，当前部门下有员工，不能直接删除！
        //1. 查询部門下是否有学员



        LambdaQueryWrapper<Emp> Wrapper = new LambdaQueryWrapper<>();
        Wrapper.eq(Emp::getDeptId, id);

        Long count = empMapper.selectCount(Wrapper);
        if (count >0) {
            log.error("删除部门时：如果部门下有员工，则不允许删除该部门");
            throw new RuntimeException("对不起，当前部门下有员工，不能直接删除！");
        }
        deptMapper.deleteById(id);

    }
}




